package com.wn.service.impl;

import com.wn.service.IUserService;
import com.wn.util.LogUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author yellow Docter
 * @date 2024-07-04
 * @desc 蜗牛创想：www.woniuxy.com
 */
@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private LogUtils logUtils;

    /**
     * 添加工具类型实现增强的功能:
     *   1、重复的代码
     *   2、在原来的代码的基础上 修改了代码
     *
     *  要求:
     *    1、抽取重复的代码
     *    2、在原来的基础上 对方法进行增强、不能修改原代码
     *  必须使用AOP 实现
     *     jdk动态代理     操作繁琐 (前提条件\service必须要有接口 )
     *            jdk api 给你生成了动态代理对象 在代理对象中进行增强
     *                          logUtils.log("save");
     *     cglib动态代理   操作繁琐 (如果没有接口cglib 这个可以代理 )
     *                  生成一个class字节码、继承父类重写父类的方法可以实现增强
     *           使用cglib (框架) 生成了代码对象 在代理对象中 进行了 增强
     *                          logUtils.log("save")
     *
     *         1、jdk 和 cglib 不好的地方 :操作繁琐、有条件限制、代理所有的接口....
     *
     *   springaop 就是封装   上面的繁琐的操作 让aop开发变的简单 (我不关心你是否有接口)
     *
     *      1、操作步骤是固定
     *      2、编程简单
     */
    @Override
    public void save() {
        System.out.println("UserServiceImpl.save");
    }

    @Override
    public void delete() {
        System.out.println("UserServiceImpl.delete");
    }
}
